const express = require("express");
const app = express();
// 解决跨域使用
const cors = require("cors");
// post请求传参使用
const Parser = require("body-parser");

// 解决跨域问题
app.use(cors());
// parse application/x-www-form-urlencoded
app.use(Parser.json({limit:'50mb'}));
app.use(Parser.urlencoded({limit:'50mb',extended:true}));
// parse application/json
app.use(Parser.json());
const path = require("path");
// 静态文件
app.use("/static", express.static(path.join(__dirname, "static")));

// 1.Token签名
var secret = 'delicacies'
// 2.导入将客户端发送过来的 JWT 字符串，解析还原成 JSON 对象的包
const expressJWT = require('express-jwt')
// 工具类处理返回数据格式
const resSend = require('./utils/resSend')
// token鉴权,去掉为api的部分
app.use(expressJWT({ secret: secret }).unless({ path: [/\/api\//] }))

app.use((err, req, res, next) => {
    // 如果错误是由token解析失败导致的
    if (err.name === 'UnauthorizedError') {
        return resSend(res,401,"登录信息已失效！",Date.now())
    }
    resSend(res,500,"未知错误",Date.now())
    // 如果是其他位置原因导致的错误
    next()
})

// 引入用户相关路由
const user = require("./router/user");
app.use("/api/user", user);

// 引入管理员操作
const admin = require("./router/admin");
app.use("/admin",admin);

// 操作文章
const article = require("./router/article");
app.use("/article",article);

// 引入文件上传
const upload = require("./router/upload");
app.use("/upload",upload);

// 引入广告
const ad = require("./router/advertisement");
app.use("/advertisement",ad);

// 引入优惠券
const coupon = require("./router/coupon");
app.use("/coupon",coupon);

// 引入意见
const opinion = require("./router/opinion");
app.use("/opinion",opinion);

// 用户优惠券
const userCoupon = require("./router/userYhq");
app.use("/userCoupon",userCoupon);

// 引入订单
const order = require("./router/order");
app.use("/order",order);

// 监听开启服务
app.listen("8063", "0.0.0.0", (req,res) => {
    console.log("Server running on port 8000 And url http://127.0.0.1:8063");
});